LINQ (Language Integrated Query) এ ফাংশন এবং ডেলিগেট দুটি অত্যন্ত গুরুত্বপূর্ণ বিষয়, কারণ এগুলো LINQ কুয়েরি এক্সপ্রেশনগুলোকে আরও শক্তিশালী ও নমনীয় করে তোলে। LINQ ব্যবহারের সময় বিভিন্ন ধরণের ফাংশন এবং ডেলিগেট ব্যবহার করা হয় যা কুয়েরি অপারেশনগুলোর মধ্যে লজিক, কন্ডিশন বা অন্য কাস্টম অপারেশনস ইনজেক্ট করতে সাহায্য করে।
LINQ কুয়েরি এক্সপ্রেশনগুলোতে ফাংশন ব্যবহার করা হয় বিভিন্ন অপারেশন যেমন filtering, sorting, grouping, aggregation এবং আরও অনেক কাস্টম লজিক প্রয়োগ করতে। এটি সাধারণত lambda expressions বা anonymous methods এর মাধ্যমে করা হয়। LINQ এ ফাংশন ব্যবহার করা হয় মূলত where, select, order by, group by ইত্যাদি অপারেশনের মধ্যে।
ধরা যাক, আমাদের একটি লিস্ট আছে Employee অবজেক্টসের এবং আমরা কিছু কাস্টম ফিল্টারিং ফাংশন ব্যবহার করব:
using System;
using System.Collections.Generic;
using System.Linq;
class Employee
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public double Salary { get; set; }
}
class Program
{
static void Main()
{
List<Employee> employees = new List<Employee>
{
new Employee { ID = 1, Name = "Alice", Age = 30, Salary = 50000 },
new Employee { ID = 2, Name = "Bob", Age = 35, Salary = 60000 },
new Employee { ID = 3, Name = "Charlie", Age = 40, Salary = 70000 },
new Employee { ID = 4, Name = "David", Age = 25, Salary = 45000 }
};
// ফাংশন ব্যবহার করে employees list ফিল্টার করা
var highEarners = employees.Where(e => e.Salary > 50000).ToList();
// ফলাফল প্রদর্শন
foreach (var employee in highEarners)
{
Console.WriteLine($"{employee.Name} earns {employee.Salary}");
}
}
}
আউটপুট:
Bob earns 60000
Charlie earns 70000
এখানে Where
মেথডের মধ্যে একটি lambda function ব্যবহার করা হয়েছে যেটি Salary এর ভিত্তিতে filtering করেছে। LINQ তে ফাংশন ব্যবহার করে কাস্টম ফিল্টার বা অপারেশনগুলো খুব সহজে করা যায়।
ডেলিগেট হলো একটি টাইপ সেফ ফাংশন পয়েন্টার, যার মাধ্যমে আপনি একটি ফাংশনকে অন্য ফাংশন বা মেথডে পাস করতে পারেন। LINQ তে delegates ব্যবহার করে আপনি কিছু অপারেশন কাস্টমাইজ করতে পারেন যেমন sorting, searching, বা filtering। LINQ ফাংশনগুলোর অনেকটাই ডেলিগেট প্যারামিটার হিসেবে কাজ করে, বিশেষ করে Where, Select, OrderBy ইত্যাদি মেথডগুলোতে।
using System;
using System.Collections.Generic;
using System.Linq;
class Employee
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public double Salary { get; set; }
}
class Program
{
// ডেলিগেট ডিক্লেয়ারেশন
public delegate bool EmployeeFilter(Employee employee);
static void Main()
{
List<Employee> employees = new List<Employee>
{
new Employee { ID = 1, Name = "Alice", Age = 30, Salary = 50000 },
new Employee { ID = 2, Name = "Bob", Age = 35, Salary = 60000 },
new Employee { ID = 3, Name = "Charlie", Age = 40, Salary = 70000 },
new Employee { ID = 4, Name = "David", Age = 25, Salary = 45000 }
};
// ডেলিগেটের মাধ্যমে filtering
EmployeeFilter filter = e => e.Age > 30; // কাস্টম ফিল্টারিং
var filteredEmployees = employees.Where(e => filter(e)).ToList();
// ফলাফল প্রদর্শন
foreach (var employee in filteredEmployees)
{
Console.WriteLine($"{employee.Name} is older than 30.");
}
}
}
আউটপুট:
Bob is older than 30.
Charlie is older than 30.
এখানে, আমরা একটি delegate EmployeeFilter
তৈরি করেছি যা Employee
অবজেক্টে কাজ করবে। তারপর আমরা LINQ Where
মেথডে সেই ডেলিগেটটি পাস করেছি, যা Age > 30
শর্তে filtering করছে। LINQ ডেলিগেট ব্যবহার করে আরো কাস্টম লজিক প্রয়োগ করা সম্ভব।
Lambda expressions হল সংক্ষিপ্ত ফাংশন যেগুলি delegate হিসাবে ব্যবহৃত হয়। LINQ-এ lambda expressions খুবই গুরুত্বপূর্ণ, কারণ এগুলি ফাংশন বা ডেলিগেট হিসেবে অপারেশনগুলিকে সরাসরি কুয়েরি এক্সপ্রেশন বা মেথড চেইনে ব্যবহার করতে সাহায্য করে।
using System;
using System.Collections.Generic;
using System.Linq;
class Employee
{
public int ID { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public double Salary { get; set; }
}
class Program
{
static void Main()
{
List<Employee> employees = new List<Employee>
{
new Employee { ID = 1, Name = "Alice", Age = 30, Salary = 50000 },
new Employee { ID = 2, Name = "Bob", Age = 35, Salary = 60000 },
new Employee { ID = 3, Name = "Charlie", Age = 40, Salary = 70000 },
new Employee { ID = 4, Name = "David", Age = 25, Salary = 45000 }
};
// Lambda expression দিয়ে salary অনুযায়ী filter করা
var highEarners = employees.Where(e => e.Salary > 55000).Select(e => e.Name);
foreach (var name in highEarners)
{
Console.WriteLine($"{name} earns more than 55000.");
}
}
}
আউটপুট:
Bob earns more than 55000.
Charlie earns more than 55000.
এখানে, lambda expression (e => e.Salary > 55000
) ব্যবহার করা হয়েছে, যা সহজ এবং পাঠযোগ্যভাবে Where মেথডের মধ্যে প্রয়োগ করা হয়েছে।
LINQ এর এই শক্তিশালী বৈশিষ্ট্যগুলো আপনার কুয়েরি অপারেশনগুলোকে আরও নমনীয়, শক্তিশালী এবং সহজবোধ্য করতে সহায়ক।
Delegate হল একটি টাইপ সেফ পদ্ধতি যা কোনো মেথডকে রেফারেন্স (references) হিসেবে ব্যবহার করার সুযোগ দেয়। C#-এ Func
এবং Action
হল দুটি জনপ্রিয় ডেলিগেট টাইপ যা একটি মেথডকে প্যারামিটার হিসেবে গ্রহণ করে এবং তা কার্যকর করার জন্য ব্যবহৃত হয়।
Func
এবং Action
দুটি মেকানিজম আছে যেগুলি কোডের পুনঃব্যবহারযোগ্যতা এবং কার্যকারিতা বৃদ্ধি করতে সাহায্য করে, বিশেষত যখন আপনি কোডে নির্দিষ্ট লজিক প্রেরণ করতে চান।
Func
ডেলিগেট একটি ধরনের ডেলিগেট যা একটি ভ্যালু রিটার্ন করে এবং একটি অথবা একাধিক ইনপুট প্যারামিটার গ্রহণ করতে পারে। এটি ০ থেকে ১৬ পর্যন্ত প্যারামিটার নিতে পারে এবং অবশ্যই একটি রিটার্ন ভ্যালু প্রদান করবে।
Func<in T1, in T2, ..., TResult> funcName;
এখানে একটি Func
ডেলিগেট ব্যবহার করা হয়েছে যা দুটি সংখ্যার যোগফল প্রদান করবে:
using System;
class Program
{
static void Main()
{
// Func ডেলিগেট তৈরি, দুটি ইনপুট প্যারামিটার (int) এবং একটি রিটার্ন টাইপ (int)
Func<int, int, int> addNumbers = (a, b) => a + b;
// Func ডেলিগেট ব্যবহার
int result = addNumbers(5, 10);
Console.WriteLine($"The sum of 5 and 10 is: {result}");
}
}
আউটপুট:
The sum of 5 and 10 is: 15
এখানে, Func<int, int, int>
একটি ডেলিগেট যা দুটি int
ইনপুট নেবে এবং একটি int
রিটার্ন করবে।
Func
ডেলিগেট অনেক ইনপুট প্যারামিটারও গ্রহণ করতে পারে (যেমন ১টি, ২টি, ৩টি বা তারও বেশি) এবং একটি রিটার্ন টাইপও থাকতে পারে।
Func<int, int, int, int> multiplyNumbers = (a, b, c) => a * b * c;
int result = multiplyNumbers(2, 3, 4);
Console.WriteLine($"The product is: {result}");
আউটপুট:
The product is: 24
এখানে, Func<int, int, int, int>
তিনটি ইনপুট প্যারামিটার এবং একটি int
রিটার্ন করেছে।
Action
ডেলিগেটের ক্ষেত্রে কোনো রিটার্ন ভ্যালু থাকে না। এটি শুধুমাত্র ইনপুট প্যারামিটার নেয় (০ থেকে ১৬টি ইনপুট প্যারামিটার) এবং কোনো রিটার্ন ভ্যালু প্রদান করে না।
Action<in T1, in T2, ...> actionName;
এখানে একটি Action
ডেলিগেট ব্যবহার করা হয়েছে, যা দুটি প্যারামিটার নেবে এবং কনসোলে মেসেজ প্রিন্ট করবে।
using System;
class Program
{
static void Main()
{
// Action ডেলিগেট তৈরি, দুটি ইনপুট প্যারামিটার (int)
Action<int, int> printSum = (a, b) => Console.WriteLine($"Sum: {a + b}");
// Action ডেলিগেট ব্যবহার
printSum(10, 20);
}
}
আউটপুট:
Sum: 30
এখানে Action<int, int>
একটি ডেলিগেট যা দুটি int
ইনপুট প্যারামিটার নেয় এবং কোনো রিটার্ন ভ্যালু প্রদান না করে কেবল কনসোলে ফলাফল প্রিন্ট করে।
Action
ডেলিগেট ব্যবহার করা যেতে পারে বিভিন্ন কাজ (side effects) করার জন্য, যেমন ফাইল লেখার কাজ, UI আপডেট করা ইত্যাদি। নিচে একটি উদাহরণ দেওয়া হলো যেখানে Action
ডেলিগেট ব্যবহার করে একটি ডেটা কনসোলে প্রিন্ট করা হয়েছে:
Action<string> printMessage = (message) => Console.WriteLine(message);
printMessage("Hello, this is an Action delegate example!");
আউটপুট:
Hello, this is an Action delegate example!
ফিচার | Func | Action |
---|---|---|
রিটার্ন ভ্যালু | একটি রিটার্ন ভ্যালু থাকে। (TResult) | কোনো রিটার্ন ভ্যালু নেই। |
ইনপুট প্যারামিটার | ১ থেকে ১৬টি ইনপুট প্যারামিটার নিতে পারে। | ০ থেকে ১৬টি ইনপুট প্যারামিটার নিতে পারে। |
ব্যবহার | সাধারণত গণনা বা কিছু মান বের করার জন্য ব্যবহৃত। | কোন নির্দিষ্ট কাজ (side effects) করার জন্য ব্যবহৃত। |
Func এবং Action ডেলিগেট C#-এ ফাংশনাল প্রোগ্রামিং ধারণা প্রয়োগের জন্য অত্যন্ত কার্যকরী। Func ডেলিগেট একটি রিটার্ন ভ্যালু প্রদান করে, যেখানে Action কোনো রিটার্ন ভ্যালু ছাড়াই নির্দিষ্ট কার্য সম্পাদন করতে ব্যবহৃত হয়। এই দুই ডেলিগেটের ব্যবহার কোডে আরো নমনীয়তা এবং পুনঃব্যবহারযোগ্যতা আনে।
Custom Delegates এবং LINQ Methods দুটি গুরুত্বপূর্ণ ধারণা যা LINQ (Language Integrated Query) এবং C# প্রোগ্রামিংয়ের মধ্যে ব্যবহৃত হয়। LINQ ব্যবহার করার সময় কাস্টম ডিলিগেট এবং কাস্টম LINQ মেথডের সাহায্যে আপনি আরো জটিল কুয়েরি বা ডেটা প্রসেসিং করতে পারেন।
এখানে আমরা আলোচনা করব কাস্টম ডিলিগেট তৈরি করা এবং LINQ মেথডের মাধ্যমে কাস্টম অপারেশন কিভাবে সম্পন্ন করা যায়।
ডেলিগেট C# এ একটি টাইপ যা মেথডের রেফারেন্স ধারণ করে। এটি প্যারামিটার হিসেবে মেথড গ্রহণ করতে পারে এবং সেই মেথডের কার্যাবলী চালাতে পারে। যখন আপনি Custom Delegates ব্যবহার করবেন, তখন আপনি নিজের মতো মেথড সিগনেচার এবং কার্যপদ্ধতি তৈরি করতে পারবেন, যা LINQ বা অন্যান্য C# প্রোগ্রামিং টাস্কের জন্য উপযোগী হতে পারে।
// Custom Delegate Declaration
public delegate bool EmployeeFilter(Employee emp);
public class Employee
{
public string Name { get; set; }
public int Age { get; set; }
public string Position { get; set; }
}
class Program
{
static void Main(string[] args)
{
// Sample list of Employees
List<Employee> employees = new List<Employee>
{
new Employee { Name = "John", Age = 25, Position = "Software Engineer" },
new Employee { Name = "Jane", Age = 32, Position = "Manager" },
new Employee { Name = "Jake", Age = 28, Position = "Developer" }
};
// Define custom delegate to filter employees older than 30
EmployeeFilter filterOlderThan30 = emp => emp.Age > 30;
// Use delegate to filter employees
var filteredEmployees = employees.Where(emp => filterOlderThan30(emp)).ToList();
// Display filtered employees
foreach (var employee in filteredEmployees)
{
Console.WriteLine($"{employee.Name}, {employee.Age}");
}
}
}
এখানে:
EmployeeFilter
হল একটি কাস্টম ডেলিগেট যা Employee
অবজেক্টকে প্যারামিটার হিসেবে নেবে এবং একটি bool
রিটার্ন করবে।filterOlderThan30
হল একটি কাস্টম ডেলিগেট যা Employee
অবজেক্টের বয়সের ওপর ভিত্তি করে ফিল্টার করবে।Where
মেথডে কাস্টম ডেলিগেটটি ব্যবহার করা হয়েছে।LINQ মেথডগুলি হল এক ধরনের extension methods যা IEnumerable এবং IQueryable ইন্টারফেসে যোগ করা হয়। আপনি যদি LINQ এর মধ্যে কিছু কাস্টম অপারেশন করতে চান, তবে আপনি নিজেই কাস্টম LINQ মেথড তৈরি করতে পারেন। এই মেথডগুলি ডেটার উপর বিশেষ কাস্টম ফিল্টার, সিলেকশন, অথবা অন্যান্য অপারেশন করতে সহায়তা করে।
LINQ মেথডস সাধারণত অনেক ধরনের built-in অপারেশন সরবরাহ করে (যেমন Select()
, Where()
, OrderBy()
, GroupBy()
, ইত্যাদি), তবে আপনি চাইলে কাস্টম LINQ মেথডও তৈরি করতে পারেন যা একটি নির্দিষ্ট অপারেশন সম্পাদন করবে।
এখানে একটি কাস্টম LINQ মেথড তৈরি করার উদাহরণ দেওয়া হল যা একটি ইন্টিজার লিস্টে সমস্ত পজিটিভ নাম্বারগুলো ফিল্টার করবে:
// Custom LINQ Method Declaration
public static class CustomLinqMethods
{
public static IEnumerable<int> FilterPositiveNumbers(this IEnumerable<int> source)
{
foreach (var number in source)
{
if (number > 0)
yield return number;
}
}
}
class Program
{
static void Main(string[] args)
{
// List of integers
List<int> numbers = new List<int> { -10, 5, 0, 15, -20, 30 };
// Use custom LINQ method
var positiveNumbers = numbers.FilterPositiveNumbers();
// Display filtered numbers
foreach (var num in positiveNumbers)
{
Console.WriteLine(num); // Output: 5, 15, 30
}
}
}
এখানে:
FilterPositiveNumbers
একটি কাস্টম LINQ মেথড যা ইন্টিজারের লিস্টের মধ্যে পজিটিভ নাম্বারগুলো ফিল্টার করে রিটার্ন করবে।this IEnumerable<int>
ব্যবহার করা হয়েছে যাতে এটি একটি extension method হয়ে কাজ করে, যা আপনি যে কোনো ইন্টিজার লিস্টে ব্যবহার করতে পারেন।LINQ কুয়েরিতে custom delegates ব্যবহার করলে আপনি কাস্টম ফিল্টারিং, ম্যানিপুলেশন বা কোনো নির্দিষ্ট লজিক প্রয়োগ করতে পারবেন যা ডিফল্ট LINQ অপারেশন দ্বারা সম্ভব নয়। যেমন, যদি আপনি একটি নির্দিষ্ট কন্ডিশনে custom delegate ব্যবহার করতে চান, তাহলে LINQ কুয়েরিতে সেটি প্রয়োগ করতে পারবেন।
// Custom Delegate
public delegate bool NumberCondition(int number);
// Custom LINQ method to apply delegate logic
public static class CustomLinqMethods
{
public static IEnumerable<int> FilterByCondition(this IEnumerable<int> source, NumberCondition condition)
{
foreach (var number in source)
{
if (condition(number))
yield return number;
}
}
}
class Program
{
static void Main(string[] args)
{
// Sample list of numbers
List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// Custom delegate to filter even numbers
NumberCondition isEven = n => n % 2 == 0;
// Use custom LINQ method to apply delegate
var evenNumbers = numbers.FilterByCondition(isEven);
// Display the even numbers
foreach (var num in evenNumbers)
{
Console.WriteLine(num); // Output: 2, 4, 6, 8, 10
}
}
}
এখানে:
FilterByCondition
একটি কাস্টম LINQ মেথড যা custom delegate ব্যবহার করে ডেটাকে ফিল্টার করে।NumberCondition
ডেলিগেট ব্যবহার করা হয়েছে, যা নম্বরটি even কিনা তা যাচাই করে।Lambda Expressions এবং LINQ Query দুটি শক্তিশালী বৈশিষ্ট্য যা C# এবং LINQ-এর মাধ্যমে ডেটা পরিচালনা এবং কুয়েরি করার প্রক্রিয়াকে আরও সহজ এবং কার্যকরী করে তোলে। তবে, এগুলোর ব্যবহার এবং গঠন কিছুটা আলাদা।
Lambda Expressions হল anonymous methods বা delegate methods যা C# কোডে ছোট এবং সংক্ষিপ্ত ফাংশন লিখতে ব্যবহৃত হয়। লাম্বডা এক্সপ্রেশন সাধারণত একটি ইনলাইন মেথড হিসেবে কাজ করে এবং এর সিগনেচার খুবই সোজা। এটি কোডের রিডেবিলিটি এবং কার্যকারিতা বৃদ্ধি করতে সাহায্য করে।
(parameters) => expression
এখানে, parameters
হল ইনপুট প্যারামিটার এবং expression
হল সেই প্যারামিটারগুলির ভিত্তিতে পরিচালিত কোন এক্সপ্রেশন।
Func<int, int, int> add = (x, y) => x + y;
Console.WriteLine(add(5, 3)); // আউটপুট: 8
এখানে, (x, y) => x + y একটি লাম্বডা এক্সপ্রেশন যা দুইটি পূর্ণসংখ্যাকে যোগ করে।
LINQ Query হল Language Integrated Query-এর সংক্ষিপ্ত রূপ, যা C# এবং VB.NET-এ ডেটার উপর কুয়েরি চালাতে ব্যবহৃত হয়। LINQ ডেটাবেস, XML, ডেটা কালেকশন বা অন্য কোন ডেটা সোর্স থেকে ডেটা নিয়ে আসার জন্য কোডের মধ্যে সরাসরি কুয়েরি ব্যবহার করার সুবিধা দেয়।
LINQ Query সাধারণত SQL-like syntax ব্যবহার করে কাজ করে, এবং এটি একটি declarative পদ্ধতিতে লেখা হয়। LINQ কুয়েরি সুনির্দিষ্ট ফিল্টারিং, গ্রুপিং, সাজানো, এবং অন্যান্য অপারেশন করতে সহায়তা করে।
var customers = from customer in context.Customers
where customer.Country == "USA"
select customer;
এখানে LINQ Query ব্যবহার করে Customers টেবিল থেকে সেই গ্রাহকদের ফিল্টার করা হয়েছে যাদের Country 'USA'।
Lambda Expressions এবং LINQ Query উভয়ই ডেটা প্রসেসিং এবং কুয়েরি লেখার জন্য ব্যবহার করা হলেও তাদের মধ্যে কিছু মৌলিক পার্থক্য রয়েছে।
LINQ Query Syntax হল SQL-এর মতো একটি declarative syntax যা from, where, select, group by ইত্যাদি কিওয়ার্ড ব্যবহার করে ডেটা ফিল্টার, সাজানো এবং গ্রুপ করার জন্য। এটি SQL এর মতো কাজ করে এবং SQL কোডের সাথে পরিচিত যারা তাদের জন্য এটি সহজ হতে পারে।
var customers = from customer in context.Customers
where customer.City == "New York"
select customer;
এখানে, আমরা from
কিওয়ার্ড দিয়ে ডেটা সোর্সের নাম এবং তারপরে where
কিওয়ার্ড ব্যবহার করে শর্ত (যেমন: City == "New York") যোগ করেছি।
Lambda Expression সিনট্যাক্স হল এক ধরনের function-style syntax, যা LINQ এর সাথে আরও বেশি ব্যবহৃত হয়। এটি delegate বা anonymous method হিসেবে কাজ করে এবং কোডের মধ্যে inline ফাংশন ব্যবহারের সুবিধা দেয়।
var customers = context.Customers
.Where(customer => customer.City == "New York")
.ToList();
এখানে, Where মেথডের মধ্যে একটি লাম্বডা এক্সপ্রেশন (customer => customer.City == "New York")
ব্যবহৃত হয়েছে যা City এর মান New York হলে সেই গ্রাহকদের রিটার্ন করবে।
বিষয় | LINQ Query | Lambda Expression |
---|---|---|
সিনট্যাক্স | SQL-এর মতো declarative syntax | Function-style syntax |
পাঠযোগ্যতা | SQL এর মতো, কিছুটা সহজ এবং পরিষ্কার হতে পারে | Inline কোড, কিছুটা কম পরিষ্কার হতে পারে |
বৈশিষ্ট্য | কুয়েরি খুব সহজে লেখা যায়, এবং ক্লাসিকাল SQL-এর মতো | কমপ্লেক্স ফাংশনাল প্রোগ্রামিংয়ের জন্য আদর্শ |
ব্যবহার | সহজ কুয়েরি বা জটিল জোইন অপারেশনগুলোর জন্য | দ্রুত এবং নমনীয় কুয়েরি অপারেশনগুলোর জন্য |
ধরা যাক, আমাদের Customers টেবিল রয়েছে, এবং আমরা সেই গ্রাহকদের খুঁজে বের করতে চাই যারা "New York"-এ বাস করেন এবং যাদের বয়স ৩০ এর বেশি।
var result = from customer in context.Customers
where customer.City == "New York" && customer.Age > 30
select customer;
var result = context.Customers
.Where(customer => customer.City == "New York" && customer.Age > 30)
.ToList();
দুজনই একই ফলাফল দেয়, কিন্তু LINQ Query-এ আপনি from, where, select কিওয়ার্ড ব্যবহার করছেন, যেখানে Lambda Expression সরাসরি Where এবং অন্যান্য মেথডের মাধ্যমে ফিল্টারিং এবং প্রসেসিং করছে।
LINQ Query সাধারণত ব্যবহার করা হয় যখন আপনি SQL এর মতো সিনট্যাক্সে কোড লেখতে পছন্দ করেন, আর Lambda Expression ব্যবহার করা হয় যখন আপনি কোডে আরও কার্যকরী, সংক্ষিপ্ত এবং জটিল ফাংশন ব্যবহার করতে চান।
select
, join
, group by
ইত্যাদি)।Where
, Select
, OrderBy
, GroupBy
, Aggregate
এর মতো মেথডগুলোকে চেইন করে একাধিক কার্যক্রম সম্পাদন করতে চান।Lambda Expressions এবং LINQ Query উভয়ই LINQ-এর সঙ্গে ব্যবহৃত হয় এবং ডেটা প্রসেসিংয়ের জন্য শক্তিশালী সরঞ্জাম। তবে, এগুলোর ব্যবহার এবং সিনট্যাক্সে পার্থক্য রয়েছে। আপনি যেকোনো একটিকে ব্যবহার করতে পারেন আপনার প্রোজেক্টের প্রয়োজন অনুসারে, কিন্তু উভয়ই অত্যন্ত কার্যকরী এবং ডেটা প্রসেসিংকে সহজ করে তোলে।
common.read_more